﻿#pragma once
#include <stdio.h>
#include <signal.h>
#include <atomic>
#include <string>
#include <thread>
#include <iostream>
#include <vector>
#include <mutex>
#include <queue>
#include <opencv2/opencv.hpp>
#include <cuda_fp16.h>
#include <cuda_runtime.h>

#include "base_puller.h"
#include "base_util/math_compute.h"
#include "yuv_to_rgb.hpp"

namespace stream {



class CUDecoderManger : public BaseDecoderManger
{
public:
  CUDecoderManger(LogInfo* log_info);
  ~CUDecoderManger();

  int init_decode();

public:

};





class CUPktDecoder : public BasePktDecoder
{
public:
  CUPktDecoder(CUDecoderManger* decode_mnger, int dw, int dh, int thread_id, int gpu_id, LogInfo* log_info);
  ~CUPktDecoder();

public:
  int init_params();
  int run_thread();
  int stop_decode();
  int release_params();


private:

  std::vector<DecoderData*> source_ids_h264;
  std::vector<DecoderData*> source_ids_h265;

};

}   // namespace camera
